音声情報処理 13
離散フーリエ変換と逆離散フーリエ変換
Discrete Fourier Transform:DFT
離散信号と回転⼦の内積和でスペクトルを解析
時間領域→周波数領域
周波数領域→時間領域
ある時間領域の時間波形→ある⼀定の帯域でのスペクトル
ある時間領域の時間波形→ある⼀定の帯域でのスペクトル
離散フーリエ変換では,分析対象は周期信号を仮定
切り出した有限区間の信号が繰り返されているという仮定
短時間の波形の様⼦が続いているとみなして分析
離散フーリエ変換における周期性
• 離散フーリエ変換のスペクトルには周期性が存在
• 振幅,パワー,位相スペクトル全てに周期性がある
• 標本化周波数に応じて,繰り返し構造が⾒られる
• 標本化周波数=8kHzならば,8kHzごとに
同じ構造(基本スペクトル)が現れる
離散フーリエ変換における対称性
• 基本スペクトルの1/2の位置で線対称/点対称となる
• 振幅・パワースペクトルは,基本スペクトルの1/2で線対称
• 位相スペクトルは,基本スペクトルの1/2で点対称
離散フーリエ変換の問題点
信号⻑Nを⼤きくすると・・・
良い)スペクトル解析精度が向上
悪い)計算量が増⼤
離散フーリエ変換と同様にスペクトルを得られる
計算時間を短縮可能
ただし,データ数は2のp乗になる(2p個のデータ)
⾼速化の秘密:回転⼦の性質
回転⼦の性質
周期Nで同じ値になる
2. データ数N $ 2^{p} を分析するうえで,
pはp < mを満たす任意の数であれば右式を満たす
3. 周期の1/2で数値の符号が反転する:対称性を利⽤
⾼速化の秘密:データ分割
データを少ない数に分割して離散フーリエ変換を繰り返す
少ないデータ数の離散フーリエ変換を複数回実施
離散フーリエ変換であれば32個のデータに対して$ 32^2=1024回の計算が必要
データを分割して,16個のデータに対して2回計算すると $ 16^2=256(1回あたりの計算量)×2回(分割数)=512
データ数が2の階乗にならない場合は,0で埋める
13なら、16になるように埋める
計算量の違い
離散フーリエ変換から⾼速フーリエ変換になることで,どの程度計算量が変わるのか
離散フーリエ変換は$ N^2回
⾼速フーリエ変換は$ N log_2 N回
N =256の場合
離散フーリエ変換は$ 256^2回:65,536 ($ 2^{16})回
⾼速フーリエ変換は$ N log_2 N回: $ 256 log_2 256=
$ 256 log_2 2^8= 256×8 = 2048回
1秒(1000 ms)の⾳声に対して,フレーム⻑ 20 ms,フレーム周期 10 msでFFTを実⾏すると,99個のスペクトルが得られる
マッピングするなら3次元空間
シフト間隔はフレーム⻑の1/2が使われることが多い
シフト間隔ごとに⾳響特徴量が得られる:実際の分析の時間分解能